package com.br.imovel.controller;

import com.br.imovel.ejb.AdministradorEJBLocal;
import com.br.imovel.ejb.AlunoEJBLocal;
import com.br.imovel.ejb.ProfessorEJBLocal;
import com.br.imovel.model.Usuario;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

@ManagedBean
@SessionScoped
public class UsuarioMBean {

    @EJB
    private UsuarioBean usuarioBean;
    @EJB
    private AlunoEJBLocal alunoEJB;
    @EJB
    private AdministradorEJBLocal admEJB;
    @EJB
    private ProfessorEJBLocal profEJB;
    private SessionMBean sessionBean;
    private String tipo;

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
    
    private UsuarioDTO usuario = new UsuarioDTO();
    
    public UsuarioMBean() {
    }

    public String login() {
        
       FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletRequest req = (HttpServletRequest) fc.getExternalContext().getRequest();

        String login = usuario.getLogin();
        String senha = usuario.getPassword1();
       
        
        Usuario usuario = usuarioBean.findByLoginSenha(login, senha);
       if(usuario == null){
            fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO", "Autenticação falhou!"));
            return "";
        } 
        if(alunoEJB.recupera(usuario.getId())!= null){
            setTipo("A");
        }else if(admEJB.recupera(usuario.getId())!= null){
            setTipo("AD");
        }else if(profEJB.recupera(usuario.getId())!= null){
            setTipo("P");
        }       
        
        return "avaliacao";        
    }

    public String logout() {
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletRequest req = (HttpServletRequest) fc.getExternalContext().getRequest();
        try {
            req.logout();
            fc.addMessage(null, new FacesMessage("SUCCESSO"));
            req.getSession().invalidate();
            fc.getExternalContext().invalidateSession();
            sessionBean.setUsuario(null);

        } catch (ServletException e) {
            e.printStackTrace();
            fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO", "Ocorreu um errro ao tentar sair!"));
            return "";
        }
        return "avaliacao";
    }

    public UsuarioDTO getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioDTO usuario) {
        this.usuario = usuario;
    }
}
